<?php
/**
 * Created by PhpStorm.
 * User: ljc
 * Date: 2018/6/17
 * Time: 10:58
 */

namespace houdun\core;


class Boot
{
	//框架启动函数，进入单一入口后，调用了这个启动函数，让框架运行。
	//在这里可以对框架运行进行一些初始化设置，例如开启session。设置时区等。
	public static function run(){
		//$whoops = new \Whoops\Run;
		//$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
		//$whoops->register();
		//调用静态初始化方法。对一些配置进行初始化
		self::init();
		//调用应用运行函数
		self::runApp ();
	}

	private static function runApp(){
		//从get参数里获得要访问的模块，如果不传，默认为home
		$module=isset($_GET['m'])?$_GET['m']:'home';
		//从get参数里获得要访问的控制器名，如果不传，默认为Entry
		$controller=isset($_GET['c'])?$_GET['c']:'entry';
		//从get参数里获得要访问的方法名,如果不传，默认为Index
		$action=isset($_GET['a'])?$_GET['a']:'index';
		//将模块、控制器、方法定义为常量，方便调用模板时能够使用
		//这样就可以在模板调用函数里只写一次就可以。
		//常量定义后可以全局访问。
		define('MODULE',$module);
		define('CONTROLLER',$controller);
		define('ACTION',$action);
		//将命名空间用get参数拼接，存在一个变量中。
		$class='\app\\'.$module.'\controller\\'.ucfirst ($controller);
		//声明相应的类。调用该类里的方法。
		echo (new $class)->$action();
	}
	/**
	 * 初始化函数 对一些配置进行初始化
	 */
	private static function init(){
		//检查session是否开启，如果已经存在session_id就说明已经开启，否则就开始session
		session_id()||session_start ();
		//设置时区
		date_default_timezone_set ('PRC');
	}
}